1 module mruby.range; 2 3 import mruby.value; 4 import mruby.mrb_class; 5 import mruby.object; 6 import mruby; 7 8 extern (C): 9 10 struct mrb_range_edges 11 { 12 mrb_value beg; 13 mrb_value end; 14 } 15 16 struct RRange 17 { 18 enum mrb_vtype 19 { 20 MRB_TT_FALSE = 0, 21 MRB_TT_FREE = 1, 22 MRB_TT_TRUE = 2, 23 MRB_TT_FIXNUM = 3, 24 MRB_TT_SYMBOL = 4, 25 MRB_TT_UNDEF = 5, 26 MRB_TT_FLOAT = 6, 27 MRB_TT_CPTR = 7, 28 MRB_TT_OBJECT = 8, 29 MRB_TT_CLASS = 9, 30 MRB_TT_MODULE = 10, 31 MRB_TT_ICLASS = 11, 32 MRB_TT_SCLASS = 12, 33 MRB_TT_PROC = 13, 34 MRB_TT_ARRAY = 14, 35 MRB_TT_HASH = 15, 36 MRB_TT_STRING = 16, 37 MRB_TT_RANGE = 17, 38 MRB_TT_EXCEPTION = 18, 39 MRB_TT_FILE = 19, 40 MRB_TT_ENV = 20, 41 MRB_TT_DATA = 21, 42 MRB_TT_FIBER = 22, 43 MRB_TT_MAXDEFINE = 23 44 } 45 mrb_vtype tt; 46 uint color; 47 uint flags; 48 RClass* c; 49 RBasic* gcnext; 50 mrb_range_edges* edges; 51 mrb_bool excl; 52 } 53 54 mrb_value mrb_range_new (mrb_state*, mrb_value, mrb_value, mrb_bool); 55 mrb_bool mrb_range_beg_len (mrb_state* mrb, mrb_value range, mrb_int* begp, mrb_int* lenp, mrb_int len); 56 mrb_value mrb_get_values_at (mrb_state* mrb, mrb_value obj, mrb_int olen, mrb_int argc, const(mrb_value)* argv, mrb_value function (mrb_state*, mrb_value, mrb_int) func);